package com.library.books.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.library.books.domain.BookShelf;
import com.library.books.domain.vo.BookShelfBooksCopyCount;
import com.library.books.domain.vo.BookShelfChildCount;
import com.library.books.domain.vo.BookShelfJoinBooksJoinBooksCopy;
import com.library.books.domain.vo.BookShelfUsageVo;


/**
 * 书架Mapper接口
 *
 * @author hb
 * @date 2024-10-14
 */
public interface BookShelfMapper extends BaseMapper<BookShelf>
{
    /**
     * 查询书架列表
     *
     * @param bookShelf 书架
     * @return 书架集合
     */
    List<BookShelf> selectBookShelfList(BookShelf bookShelf);

    /**
     * 查询父级列表
     *
     * @return 书架树形集合
     */
    List<BookShelf> findByParentId();

    /**
     * 查询架子副本数量
     * @param bookShelfIds 架子
     * @return 架子数据
     */
    List<BookShelfBooksCopyCount> selectBookShelfBooksCopyCountById(List<Long> bookShelfIds);

    /**
     * 查询父级架子-子级架子数量
     * @param bookShelfIds 架子
     * @return 架子数据
     */
    List<BookShelfChildCount> selectBookShelfChildCountById(List<Long> bookShelfIds);

    /**
     * 获取书架书籍列表详细信息
     *  - 书架的全部书籍（架子信息，书籍信息，书籍副本信息）
     */
    List<BookShelfJoinBooksJoinBooksCopy> selectBookShelfJoinBooksJoinBooksCopyList(List shelfIds);

    /**
     * 查询书架书籍使用情况列表
     * @param bookShelf 参数
     * @return 书架书籍使用情况信息列表
     */
    List<BookShelfUsageVo> selectBookShelfUsageInfoList(BookShelf bookShelf);
}
